#include <iostream>
#include <string>
#include <sstream>
#include <jsoncpp/json/json.h>
#include <memory>

int main()
{
    // 序列化 -- 将结构化数据转化成序列字符串

    // 1. 将结构化数据放入 Json::Value 中
    Json::Value root;
    root["name"] = "mark";
    root["gender"] = "男";
    root["age"] = 23;

    // 2. 将Json::Value 中的数据转化为序列字符串
    Json::FastWriter write;
    std::string s = write.write(root);
    std::cout << s << std::endl;

    // 反序列化 -- 将序列字符串转化成结构化数据
    // 1. 将序列字符串数据放入Json::Value中
    Json::Value root1;
    Json::Reader reader;
    bool ok = reader.parse(s, root1);

    // 2. 将Json::Value 中的数据转化为结构化数据
    if (ok)
    {
        std::string name = root1["name"].asString();
        int age = root1["age"].asInt();
        std::string gender = root1["gender"].asString();

        std::cout << name << std::endl;
        std::cout << age << std::endl;
        std::cout << gender << std::endl;
    }

    return 0;
}